Method and apparatus for initialization of read latency tracking circuit in high-speed DRAM

ABSTRACT

A method of synchronizing counters in two different clock domains within a memory device is comprised of generating a start signal for initiating production of a running count of clock pulses of a read clock signal in a first counter downstream of a locked loop and delaying the input of the start signal to a second counter upstream of the locked loop to delay the initiation of a running count of control clock pulses by an amount equal to a predetermined delay. Another disclosed method is for controlling the output of data from a memory device comprising deriving from an external clock signal a control clock for operating an array of storage cells and a read clock, both the control clock and the read clock being comprised of clock pulses. A start signal is generated for initiating production of a running count of the read clock pulses in a first counter. The start signal may be produced when a locked loop achieves a lock between the read clock and the control clock. The input of the start signal to a second counter is delayed to delay the initiation of a running count of the control clock pulses. The delay, which may be expressed as an integer number of clock cycles, may be equal to an input/output delay of the memory device. The method may be modified by inputting the start signal to an offset counter before initiating the production of the running count of the read clock pulses in the first counter. The offset counter may be loaded with a value equal to a programmed latency less a synchronization overhead. Once the running counts are initiated, each time a read command is received, a then current value of the running count of control clock pulses from the second counter is latched or held. The held value is compared to the running count of read clock pulses from the first counter, with the read clock signal being used to output data in response to the comparison. Apparatus for implementing the disclosed methods are also disclosed. Because of the rules governing abstracts, this abstract should not be used to construe the claims.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of copending U.S. patentapplication Ser. No. 11/429,856 filed May 8, 2006 and entitled Methodand Apparatus for Initialization of Read Latency Tracking Circuit inHigh Speed DRAM, which is a continuation of U.S. patent application Ser.No. 10/910,838 filed Aug. 4, 2004 and entitled Method and Apparatus forInitialization of Read Latency Tracking Circuit in High Speed DRAM, nowU.S. Pat. No. 7,065,001. The present disclosure is related to U.S.patent application Ser. No. 10/389,807 filed Mar. 18, 2003 and entitledMethod and Apparatus for Establishing and Maintaining Desired ReadLatency in High-speed DRAM, now U.S. Pat. No. 6,762,974, and which isassigned to the same assignee as the present disclosure.

BACKGROUND OF THE INVENTION

The present invention relates to DRAM circuits and, more specifically,to a circuit and method for maintaining a desired read latency in a highspeed DRAM.

A typical DRAM memory system has an external DRAM controller that makesread and write requests to a DRAM memory device. When making a readrequest, the controller expects data within the memory device to beavailable on a data bus within a predetermined read latency, which isusually a predetermined number of system clock cycles, which areexternal to the DRAM device, after a read request is made by thecontroller, e.g., eight external clock cycles.

Problems with maintaining read data latency in high speed DRAM arisefrom the necessity to align data with the external clock using aninternal delay locked loop (DLL), which generates timing signals,including a read clock signal, for internal DRAM operations. The phaserelationship between the external clock, an internal command/addresscapture clock and the DLL output clock, which is used to generate theread clock signal, is completely arbitrary and dependent on frequencyand process, voltage, and temperature (PVT) variations. The commandcapture clock is delayed relative to the external clock by the clockreceiver and other clock distribution delays. The DLL is back timedrelative to the external clock by the delay of the data output circuits,but receives its input from an internal clock receiver and also hasadjustments made to its output signals that are not synchronized withthe external clock. A difference in phase near or greater than acomplete clock cycle creates difficulty in controlling timing betweenthe command/address capture clock domain and the DLL clock domain.

Internally the DRAM memory device has its own DLL driven clock systemthat receives the external clock signal and develops from the externalclock several different internal clock signals, including a read clocksignal, for internal operation of the memory device. The internal clocksystem of known, high speed memory devices produces at least two clockdomains. The first clock domain represents the timing used in the bulkof the logic circuits and to drive the memory array. The timing for thefirst domain is produced from the internal clock receiver, which isbuffered from the external free running system clock. The phase of theclock signal in the first domain relative to the external clock isdependent upon delays in the clock receiver that receives the externalclock signal. The second domain, also derived from the external systemclock, represents the timing of a back-timed read clock signal. Thisclock domain is produced by the delay locked loop DLL and associatedclock trees. This second clock domain produces a read clock foroperating data read latches. The read clock is provided to the readlatch with a desired phase relationship relative to the external systemclock. The second clock domain compensates for delays in the data outputpath to produce a read clock signal that operates the output datalatches to achieve a specified phase alignment with the external systemclock.

Neither of these two clock domains accurately reflects the timing of theexternal system clock, particularly at high frequencies of operation.The timing of the clock signals in the two domains may crisscross oneanother during memory device operation due to process, voltage andtemperature (PVT) variations. Consequently, a problem may arise in thatthe clock domain responsible for delivery of read data to an outputlatch may cause this data to be delivered at a different time from whenthe back-timed read clock for latching that data is present at thelatch, or when the data is actually required to be driven to an externalbus.

To meet a specified read latency the memory device must be able to countclock signals following receipt of a READ command and activate theoutput latch and data driver to latch output data with the back-timedread clock and drive the bus at the precise time necessary to producethe specified read latency.

Because the amount of read clock back-timing relative to the dataavailability becomes indeterminate during high speed operation, it isvery difficult to control the read clock and guarantee a correct dataoutput and a specific read latency as measured in external clock cycles.

One solution to these problems is disclosed in U.S. patent applicationSer. No. 10/389,807 entitled Method and Apparatus for Establishing andMaintaining Desired Read Latency in High-Speed DRAM which is assigned tothe same assignee as the present invention. That document discloses amethod and apparatus for managing the variable timing of internal clocksignals derived from an external clock signal to compensate foruncertainty and variations in the amount of read clock back timingrelative to data flow to achieve a specified read latency. A resetsignal is generated at DRAM initialization and starts a first counter,which counts external clock cycles, and is also passed through a slavedelay line of a delay lock loop to start a second counter. The countersrun continuously once started and the difference in count valuesrepresent the internal delay as an external clock signal passes throughthe delay lock loop to produce an internal read clock signal. Aninternal read latency value is used to offset either counter to accountfor the internal read latency of the DRAM circuit. Once the non-offsetcounter is equivalent to the offset counter, read data is placed on anoutput line with a specified read latency and synchronized with theexternal read clock.

Another solution to these problems is disclosed in U.S. Pat. No.6,687,185 which discloses an apparatus and method for coordinating thevariable timing of internal clock signals derived from an external clocksignal to ensure that read data and a read clock used to latch the readdata arrive at the data latch in synchronism and with a specified readlatency. A read clock is produced from the external clock signal in adelay lock loop circuit and a start signal, produced in response to aread command, is passed through a delay circuit slaved with the delaylock loop so that the read clock signal and a delayed start signal aresubject to the same internal timing variations. The delayed start signalis used to control the output of read data by the read clock signal.

BRIEF SUMMARY OF THE INVENTION

One aspect of the present disclosure is a method of synchronizingcounters in two different clock domains within a memory device. Themethod is comprised of generating a start signal for initiatingproduction of a running count of clock pulses of a read clock signal ina first counter downstream of a locked loop and delaying the input ofthe start signal to a second counter upstream of the locked loop todelay the initiation of a running count of control clock pulses by apredetermined amount.

Another aspect of the present disclosure is a method of controlling theoutput of data from a memory device. The method is comprised of derivingfrom an external clock signal a control clock for operating an array ofstorage cells and a read clock, both the control clock and the readclock being comprised of clock pulses. A start signal is generated forinitiating production of a running count of the read clock pulses in afirst counter. The start signal may be produced when a locked loopachieves a lock between the read clock and the control clock. The inputof the start signal to a second counter is delayed to delay theinitiation of a running count of the control clock pulses. The delay maybe equal to a time it takes for a signal to propagate through aninput/output circuit of the memory device. A value of the running countof the control clock, or a modified value of the running count of thecontrol clock, from the second counter is held in response to a readcommand. The held value from the second counter is compared to therunning count of the first counter. The read clock signal is used tooutput data from the memory device in response to the comparing.

According to another aspect of the present disclosure, the method mayinclude inputting the start signal to an offset counter beforeinitiating the production of the running count of the read clock pulsesin the first counter. The offset counter may be loaded with a valueequal to a programmed latency less a synchronization overhead which maybe expressed as a number of cycles. Once the running counts areinitiated, each time a read command is received, a then current value ofthe running count of control clock pulses from the second counter islatched or held. The held value is compared to the running count of readclock pulses from the first counter, with the read clock signal beingused to output data in response to the comparison.

Another aspect of the present disclosure is directed to a circuit forsynchronizing counters in two different clock domains within a memorydevice comprising a locked loop having a forward path comprising a phasedetector, a delay line and a clock distribution circuit. The locked loophas a feedback path comprised of a model of the input/output delayconnected between the clock distribution circuit and the phase detector.The looked loop generates a lock signal upon obtaining a lock between aread clock available at the output of the clock distribution circuit anda control clock input to the phase detector. An initialization circuitproduces a start signal in response to the lock signal. A first counterdownstream of the locked loop produces a running count of clock pulsesof the read clock signal in response to the start signal. A secondcounter upstream of the locked loop produces a running count of clockpulses of the control clock signal in response to the start signal. Adelay circuit is positioned between the initialization circuit and thesecond counter for delaying the initiation of the production of therunning count of clock pulses in the second counter. The circuit may beused for controlling the output of data from a memory device by adding acircuit, e.g., a latch, for holding a then current value of the runningcount of clock pulses in response to a read command; a comparator forcomparing the held current value of the second counter to the runningcount of the first counter; and a data output path, responsive to thecircuit for comparing and the read clock, for outputting data from thememory device.

According to another embodiment of the present disclosure, an offsetcounter may be positioned between the initialization circuit and thefirst counter. The offset counter may be loaded with a value equal to aprogrammed latency less a synchronization overhead.

The various embodiments of the present disclosure compensate foruncertainty and variation in the amount of read clock back-timing in theDRAM memory device by delivering data to a bus output which is properlytimed and synchronized with an external clock to ensure that data isproperly delivered to the data bus with a specified read latency.

BRIEF DESCRIPTION OF THE DRAWINGS

For the present disclosure to be easily understood and readilypracticed, the present disclosure will now be described, for purposes ofillustration and not limitation, in conjunction with the followingfigures, wherein:

FIG. 1 is a block diagram of a memory device employing one embodiment ofthe present disclosure;

FIG. 2 is a detailed block diagram of a circuit for implementing anembodiment of the present disclosure;

FIGS. 3A-3J are a timing diagram of various signals present in thecircuit of FIG. 2; and

FIG. 4 is a system employing memory devices employing the presentdisclosure.

DETAILED DESCRIPTION OF THE INVENTION

Reference will now be made in detail to certain embodiments of thepresent disclosure, examples of which are illustrated in theaccompanying drawings. Those of ordinary skill in the art willunderstand that the figures and descriptions of the present disclosureincluded herein illustrate and describe elements that are of particularrelevance to the present disclosure, while eliminating for the sake ofclarity other elements found in typical solid-state memories ormemory-based systems.

FIG. 1 illustrates an external memory controller 10 in communicationwith a memory device 12 through buses 14, 14′. Memory device 12 mayinclude any of the known high-speed solid state memory devicesincluding, but not limited to, various types of DRAM memories. The bus14 is comprised of a line for carrying an external clock signal 16(“external” with respect to memory device 12) and command/address lines18 while bus 14′ is a data bus. Buses 14, 14′ may be a single bus incertain systems. Those of ordinary skill in the art will recognize thatmany different types of bus configurations are possible. The presentinvention is not intended to be limited by any particular type of busconfiguration. Those of ordinary skill in the art will recognize thatmany DQs are provided on the memory device 12 and that the data bus 14′is a multi-line bus, although a single DQ is shown in memory device 12and a single line is shown within data bus 14′.

The external clock signal 16 is received by a clock receiver 28 whichreceives and buffers the external clock signal 16 to produce a controlclock signal 30. A command and address receiver 32 receives and bufferscommand and address signals appearing on bus 14. A command decoder 34 isresponsive to the command/address receiver 32 for latching and decodingincoming commands from the memory controller 10. An address decoder 36is provided for latching and decoding incoming addresses from externalmemory controller 10.

When a read command is decoded by the command decoder 34, that commandis used to initialize a read operation on a memory array 38. A readoperation is initiated through the read logic 40 which operates thememory array 38 to read out data from one or memory addresses identifiedby the address decoder 36. The command decoder 34, addressed decoder 36and read logic 40 are driven by the control clock 30.

Data output from the memory array 38 is input to a data pipeline 42.Data output from the data pipeline 42 is received by a read latch 44which, in turn, provides the data to an output driver 46 for driving anoutput pad DQ. Both the data pipeline 42 and read latch 44 are driven byread clocks 48.

The read clocks 48 are produced by a circuit 52 which includes a lockedloop, shown in FIG. 2, such that the control clock 30 is on one side,the upstream side, of the locked loop while the read clocks 48 are onthe other side of the locked loop, referred to as the downstream side.The phase locked loop as used herein refers to a DLL, PLL or any otherclock alignment circuit. The control clock 30 represents one clockdomain while the read clocks 48 represent another clock domain. It isimportant that the read latch 44 be driven by the read clocks 48 in amanner so that the data is presented on the data output pad DQ with aread latency which has been anticipated by the external memorycontroller 10. If the data is not provided at the DQ with the properread latency, i.e., it is presented sooner than or later than when theexternal memory controller 10 expects to receive it, the data will becorrupted and unusable. It is therefore important to establish theproper read latency. The establishment of the proper read latency iscomplicated by the fact that data is output from the memory array 38 inresponse to a clock (control clock 30) which is in a different clockdomain than the read clocks 48 which are used to drive the data to theoutput driver 46 and ultimately on to the data output pad DQ.

Those of ordinary skill in the art will recognize that the read latch 44and output driver 46 form an output data path 54. Only one output datapath 54 is illustrated in FIG. 1 although an actual memory device 12would have a plurality of such output data paths 54 to enable data to beoutput in a parallel manner on a plurality of data output pads DQ.Additionally, in some devices, the pads DQs are also used for writeoperations in which data output from the external memory controller 10is intended to be written into memory array 38. For purposes ofsimplicity, the data input paths and the various logic needed to operatethe memory array 38 for write operations are not shown in FIG. 1.

Completing the description of FIG. 1, a QED strobe signal 56 is producedby the circuit 52 as described below. The QED strobe signal 56 is usedto enable output driver 46. The QED strobe signal 56 is in sync with theread clocks 48 as will be described below.

In FIG. 2, the circuit 52 is shown in greater detail. The circuit 52 iscomprised of a locked loop 70. The locked loop 70 has a forward pathcomprised of a phase detector 72, a delay line 74 and a clockdistribution circuit or clock distribution tree 76 which produces aplurality of read clock signals. The locked loop 70 is also comprised ofa feedback path comprised of an input/output model 78 connected betweenthe clock distribution circuit 76 and one input of the phase detector72. The phase detector 72 receives the control clock signal 30 and, viathe feedback path, one of the plurality of read clocks. The locked loop70 defines an upstream side which is driven by one clock domain, i.e.,the control clock signal 30, as well as a downstream side which isdriven by another clock domain, i.e., the plurality of read clocks. Thelocked loop 70 is of a known construction and operation and is thereforenot further described herein.

The phase detector 72 produces a lock signal 80 which is input to aninitialization circuit 82. The initialization circuit 82 also receivesone of the read clock signals from the clock distribution circuit 76.The purpose of the initialization circuit 82 is to produce a startsignal 84 in response to the lock signal 80. Turning briefly to FIG. 3,the read clock signal input to the initialization circuit 82 is shown inFIG. 3A. The lock signal 80 which is also input to the initializationcircuit 82 is shown in FIG. 3B. As seen in FIG. 3B, the lock signal goeshigh, or otherwise changes state, at time t1. At time t4 the startsignal 84 illustrated in FIG. 3D goes high. Thus, the initializationcircuit 82 is effectively responsible for delaying and synchronizing thelock signal 80 from time t1 to time t4, and thereafter allowing the locksignal 80 to propagate as the start signal 84.

The start signal 84, in one embodiment, is input to a first ordownstream counter 90 through an offset down counter 92 although, inother embodiments, the offset down counter 92 may be eliminated. Boththe downstream counter 90 and the offset down counter 92 receive one ofthe plurality of read clock signals. The offset down counter alsoreceives a load command 94 from the initialization circuit 82. Turningto FIG. 3C, it is seen that the initialization circuit 82 produces theload command 94 at time t3. Thus, the load command 94 is a pulseproduced after a time delay measured from time t1 to time t3 upon theinitialization circuit's 82 receipt of the lock signal 80. Theinitialization circuit 82 may be implemented using a state machine. Theload command 94 causes the offset down counter to load a value which isa program latency L minus a synchronization overhead (SP). That can beseen in FIG. 3E. After receiving the load command, the offset downcounter 92 begins counting clock pulses at time t5 upon receipt of thefirst rising edge of the read clock shown in FIG. 3A after receipt ofthe start signal 84 illustrated in FIG. 3D. After the offset downcounter 92 has counted down from the loaded value, as shown at time t7in FIG. 3E, a “done” signal is produced which is input to a reset inputterminal of the downstream counter 90 as shown in FIG. 3F. That causesthe downstream counter 90 to begin counting clock pulses of the readclock signal at time t8.

The start signal 84 is also input into another I/O model 78′. The I/Omodel 78′ introduces the same amount of delay as the I/O model 78,namely, the time necessary for a signal to propagate through the I/Ocircuit of the device. The output of the I/O model 78′ is input to areset input terminal of a second or upstream counter 86. Referring againto FIG. 3, the start signal 84 shown in FIG. 3D is input to the I/Omodel 78′ which produces the upstream counter reset signal 88 shown inFIG. 31, synchronized to the control clock 30, at time t6 after thedelay imposed by the I/O model 78′. The upstream counter 86 receives thecontrol clock 30 and thus is producing a running count of the clockpulses comprising the control clock 30. That running count isinitialized by the upstream counter reset signal 88. When the upstreamcounter 86 receives the upstream counter reset signal 88 shown in FIG.31, the upstream counter 86 begins counting the clock pulses of thecontrol clock 30 as shown in FIG. 3J, upon receipt of the next risingclock edge. The upstream counter 86 thus produces a running count ofclock pulses of the control clock signal 30 in response to the startsignal 84 after a delay introduced by I/O model 78′.

By time t8, both the upstream counter 86 and the downstream counter 90have received signals at their respective reset input terminals and areeach producing a running count; the upstream counter 86 is producing arunning count of the pulses of the control clock 30 while the downstreamcounter 90 is producing a running count of the pulses of the read clock.

When a read command is received and decoded by the command decoder 34 ofFIG. 1, the read command or other appropriate signal is sent to a FIFO96. The purpose of the FIFO 96 is to latch or otherwise hold a thencurrent value of the running count of the upstream counter 86. That heldvalue from the upstream counter 86 is compared by a comparator 98 to therunning count of the downstream counter 90. When the two values areequal, or some other known relationship is reached, a “valid” signal isproduced. The “valid” signal is input to an unload input terminal of theFIFO 96 and a driver enable counter 100. The driver enable counter 100produces the QED strobe signal 56 which is used to enable the outputdriver 46. The construction and operation of the driver enable counter100 is known in the art and is not described further herein. After theoutput driver 46 is enabled, the read clock signal may be used to outputdata from the memory device. Thus, the output of data is in response tothe read clock signal and the digital comparator 98.

In the current disclosure, the counters 86 and 90 are initialized suchthat the upstream count value leads the downstream count value by aninteger number of clock cycles minus the delay through the I/O model 78′which, as previously stated, is the same as the delay of I/O model 78,namely, the time it takes for a signal to propagate through the I/Ocircuit of the device. By establishing this known relationship betweenthe counters, the time when the output driver enable signal is requiredto synchronize the DRAM output data with the external clock 16 can bedetermined.

The current disclosure establishes the relationship between the upstreamcounter 86 and the downstream counter 90 by sending a reset signal 88that is synchronized to the upstream counter after passing through theI/O model 78′. Thus, in addition to providing a method and apparatus forcontrolling the output of data from memory device 12, the presentdisclosure provides a method and apparatus for synchronizing counters intwo different clock domains within a memory device.

FIG. 4 illustrates an exemplary processing system 500 that utilizes DRAMmemory device 12 in accordance with the embodiments of the presentinvention disclosed above in FIGS. 1-3. FIG. 4 depicts an exemplarypersonal computer or work station architecture. The processing system500 includes one or ore processors 501 coupled to a local bus 504. Amemory controller 10 and a primary bus bridge 503 are also coupled tothe local bus 504. The processing system 500 may include multiple memorycontrollers 10 and/or multiple primary bus bridges 503. The memorycontroller 10 and the primary bus bridge 503 may be integrated as asingle device 506.

The memory controller 10 is also coupled to one or more memory buses507. Each memory bus accepts memory components 508 that include at leastone memory device 12. The memory components 508 may be a memory card ora memory module. Examples of memory modules include single inline memorymodules (SIMMs) and dual inline memory modules (DIMMs). The memorycomponents 508 may include one or more additional devices 509. Forexample, in a SIMM or DIMM, the additional device 509 might be aconfiguration memory, such as serial presences detect SPD memory. Thememory controller 502 may also be coupled to a cache memory 505. Thecache memory 505 may be the only cache memory in the processing system.Alternatively, other devices, for example, processors 501 may alsoinclude cache memories, which may form a cache hierarchy with cachememory 505. If the processing system 500 includes peripherals orcontrollers, which are bus masters or which support direct memory accessDMA, the memory controller 10 may implement a cache coherency protocol.If the memory controller 10 is coupled to a plurality of secondarymemory buses 516, each secondary memory bus 516 may be operated inparallel, or different address ranges may be mapped to different memorybuses 507.

The primary bus bridge 503 is coupled to at least one peripheral bus510. Various devices, such as peripherals or additional bus bridges maybe coupled to the peripheral bus 510. These devices may include astorage controller 511, a miscellaneous I/O device 514, a secondary busbridge 515, a multimedia processor 518, and a legacy device interface520. The primary bus bridge 503 may also be coupled to one or morespecial purpose high-speed ports 522. In a personal computer, forexample, the special purpose port might be the Accelerated Graphics PortAGP, used to couple a high performance video card to the processingsystem 500.

The storage controller 511 couples one or more storage devices 513, viaa storage bus 512, to the peripheral bus 510. For example, the storagecontroller 511 may be a SCSI controller and storage devices 513 may beSCSI discs. The I/O device 514 may be any type of peripheral. Forexample, the I/O device 514 may be a local area network interface, suchas an Ethernet card. The secondary bus bridge 515 may be used tointerface additional devices 517 via a secondary bus 516 to theprocessing system. For example, the secondary bus bridge 515 may be auniversal serial port USB controller used to couple USB devices 517 viabus 516 to the processing system 500. The multimedia processor 518 maybe a sound card, a video capture card, or any other type of mediainterface, which may also be coupled to an additional device such asspeakers 519. The legacy device interface 520 is used to couple legacydevices 521, for example, older style keyboards and mice, to theprocessing system 500.

The processing system 500 illustrated in FIG. 4 is only an exemplaryprocessing system with which the present disclosure may be used. WhileFIG. 4 illustrates a processing architecture especially suitable for ageneral purpose computer, such as a personal computer or a workstation,it should be recognized that well-known modifications could be made toconfigure the processing system 500 to become more suitable for use in avariety of applications. For example, many electronic devices thatrequire processing may be implemented using a simpler architecture thatrelies on a CPU 501 coupled to memory components 508. These electronicdevices may include, but are not limited to, audio/video processors andrecords, gaming consoles, digital television sets, wired or wirelesstelephones, navigation devices (including system based on the globalpositioning system (GPS) and/or inertial navigation), and digitalcameras and/or recorders. The modifications may include, for example,elimination of unnecessary components, addition of specialized devicesor circuits, and/or integration of a plurality of devices.

While the present invention has been described in connection withpreferred embodiments thereof, those of ordinary skill in the art willrecognize that many modifications and variations are possible. Thepresent invention is intended to be limited only by the following claimsand not by the foregoing description which is intended to set forth thepresently preferred embodiment.

1. (canceled)
 2. A method of synchronizing clock signals from twodifferent clock domains, comprising: deriving from an external clock aread clock and a control clock, said read clock and said control clockeach comprised of clock pulses; maintaining a running count of readclock pulses in a first counter in a read clock domain and maintaining arunning count of control clock pulses in a second counter in a controlclock domain; generating a start signal; delaying the input of saidstart signal to a reset terminal of said second counter; and delayingthe input of said start signal to a reset terminal of said firstcounter.
 3. The method of claim 2 wherein said delaying the input ofsaid start signal to a reset terminal of the second counter comprisesinputting the start signal to the reset terminal of the second counterthrough a delay circuit.
 4. The method of claim 2 wherein said delayingthe input of said start signal to a reset terminal of said first countercomprises inputting the start signal to the reset terminal of the firstcounter through an offset counter.
 5. The method of claim 4 additionallycomprising loading said offset counter with a value equal to aprogrammed latency less a synchronization overhead.
 6. The method ofclaim 2 wherein said generating a start signal comprises using a lockedloop having a forward path comprising a phase detector, a delay line anda clock distribution circuit, and a feedback path comprising a model ofan input/output delay connected between said clock distribution circuitand said phase detector, said locked loop generating a lock signal uponobtaining a lock between said read clock available at the output of saidclock distribution circuit and said control clock input to said phasedetector, said lock signal input to an initialization circuit forgenerating said start signal.
 7. A method of synchronizing clock signalsfrom two different clock domains, comprising: deriving from an externalclock a read clock and a control clock, said read clock and said controlclock each comprised of clock pulses; maintaining a running count ofread clock pulses in a first counter in a read clock domain andmaintaining a running count of control clock pulses in a second counterin a control clock domain; generating a lock signal when a phase lockbetween said read clock and said control clock is achieved; generating astart signal in response to said lock signal; inputting said startsignal to a reset terminal of said second counter through a delaycircuit; and inputting said start signal to a reset terminal of saidfirst counter through an offset counter.
 8. The method of claim 7additionally comprising loading said offset counter with a value equalto a programmed latency less a synchronization overhead.
 9. The methodof claim 7 wherein said generating the lock signal comprises using alocked loop having a forward path comprising a phase detector, a delayline and a clock distribution circuit, and a feedback path comprising amodel of an input/output delay connected between said clock distributioncircuit and said phase detector, said locked loop generating a locksignal upon obtaining a lock between said read clock available at theoutput of said clock distribution circuit and said control clock inputto said phase detector.
 10. A method of controlling the output of datafrom a memory device, comprising: deriving from an external clock a readclock and a control clock, said read clock and said control clock eachcomprised of clock pulses; maintaining a running count of read clockpulses in a first counter in a read clock domain and maintaining arunning count of control clock pulses in a second counter in a controlclock domain; generating a start signal; delaying the input of saidstart signal to a reset terminal of said second counter; delaying theinput of said start signal to a reset terminal of said first counter.loading a then current value of said running count of said secondcounter in response to a read signal; comparing the loaded value of saidsecond counter to said running count of said first counter; outputting avalid signal in response to said comparison; and outputting data fromsaid memory device in response to said valid signal and said read clock.11. The method of claim 10 wherein said delaying the input of said startsignal to a reset terminal of said second counter comprises inputtingthe start signal to a delay circuit.
 12. The method of claim 10 whereinsaid delaying the input of said start signal to a reset terminal of saidfirst counter comprises inputting the start signal to an offset counter.13. The method of claim 12 additionally comprising loading said offsetcounter with a value equal to programmed latency less a synchronizationoverhead.
 14. The method of claim 10 wherein said generating a startsignal comprises using a locked loop having a forward path comprising aphase detector, a delay line and a clock distribution circuit, and afeedback path comprising a model of an input/output delay connectedbetween said clock distribution circuit and said phase detector, saidlocked loop generating a lock signal upon obtaining a lock between saidread clock available at the output of said clock distribution circuitand said control clock input to said phase detector, said lock signalinput to an initialization circuit for generating said start signal. 15.The method of claim 10 additionally comprising using said valid signalto unload the then currently loaded value of said running count of saidsecond counter.
 16. A method of controlling the output of data from amemory device, comprising: deriving from an external clock a read clockand a control clock, said read clock and said control clock eachcomprised of clock pulses; maintaining a running count of read clockpulses in a first counter in a read clock domain and maintaining arunning count of control clock pulses in a second counter in a controlclock domain; generating a lock signal when a phase lock between saidread clock and said control clock is achieved; generating a start signalin response to said lock signal; inputting said start signal to a resetterminal of said second counter through a delay circuit; inputting saidstart signal to a reset terminal of said first counter through an offsetcounter; loading a then current value of said running count of saidsecond counter in response to a read signal; comparing the loaded valueof said second counter to said running count of said first counter;outputting a valid signal in response to said comparison; and outputtingdata from said memory device in response to said valid signal and saidread clock.
 17. The method of claim 16 additionally comprising loadingsaid offset counter with a value equal to a programmed latency less asynchronization overhead.
 18. The method of claim 16 wherein saidgenerating the lock signal comprises using a locked loop having aforward path comprising a phase detector, a delay line and a clockdistribution circuit, and a feedback path comprising a model of aninput/output delay connected between said clock distribution circuit andsaid phase detector, said locked loop generating a lock signal uponobtaining a lock between said read clock available at the output of saidclock distribution circuit and said control clock input to said phasedetector.
 19. The method of claim 16 additionally comprising using saidvalid signal to unload the then currently loaded value of said runningcount of said second counter.